Linuxでは、Windowsとは違い、ハード・ディスクやUSBメモリー、光学ドライブといったストレージ・デバイスを接続しただけで、ファイルを読み書きできるようにはなりません。それらのデバイス上のパーティションは必ず "/(ルート)" 以下のディレクトリのどこかにファイルシステムの一部として認識されている必要があります。Linuxシステムに認識させ、利用できるようにする作業を「マウント」と呼びます。
"/etc/fstab" に記述されている場合はLinuxOSの起動時に自動的にマウントされますが、そうではないパーティションなどについてはmountコマンドを使って手動でマウントする必要があります。
Linuxでは、複数のパーティションも1つのツリー構造にまとめて扱います。ストレージ・デバイスを接続したときは、そのデバイスにあるパーティションを、このツリー構造のどこかにディレクトリとして登録します。この作業がマウントです。登録するディレクトリのことを「マウント・ポイント」と呼びます。逆に、ツリー構造から切り離す作業を「アンマウント」と呼びます。
1./etc/fstab の編集
ファイルシステムをマウントする場合、mount コマンドにて、その都度、マウントオプションを指定しますが、これを省略する場合、/etc/fstab ファイルにマウントするファイルシステムを記述しておく事で、マウントオプションを省略する事ができます。fstab の書式は以下のようになります。
書式:[デバイス] - [マウントポイント] - [ファイルシステム] - [マウントオプション] - [dumpオプション] - [fsckオプション]
左から順に、
# vi /etc/fstab |
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 |
一番左の /dev/cdrom はマウントするデバイスファイル名、/mnt/cdrom はマウントポイント、iso9660がはマウントするデバイスのファイルシステムタイプ、noauto,owner,kudzu,ro がマウントオプションで複数ある場合は、カンマ「,」で区切って記述します。右から2番目の0 は、dump コマンドによるバックアップをするかしないかの指定で、1を指定するとバックアップを行い、0が指定されているとバックアップは行いません。一番右の0 は、fsck コマンドの実行順序を指定しています。0が指定されている場合は、fsck コマンドによる検査は行いません。
なお、マウント時に参照される/etc/mtab ファイルは、mount -a やumount
-a コマンドによって自動的に書き換え処理が行われ、通常、手動でこのファイルを編集する事はほとんどありません。
ファイルシステムを使えるようにするには、ルートファイルシステムの一部へマウントする必要があります。そのマウントするためのディレクトリをマウントポイントと呼びます。
ファイルシステムのマウントやアンマウントを実行するコマンドが、mountコマンドやunmountコマンドです。
mountコマンドを引数なしで実行すると、現在マウントされているデバイスの一覧が表示されます。
$ mount |
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) |
mount [オプション] [デバイス] [ディレクトリ] |
|
-a | /etc/fstab に記述されている全てのファイルシステムをマウントする |
-n | mount 時に/etc/mtab に書き込まない |
-r | 読み取り専用でマウントする |
-w | 読み取り/書き込みが可能な状態でマウントする |
-v | 詳細表示する |
-t type | ファイルシステムのタイプを指定する |
-f | /etc/mtab の情報を書き換えるだけで、実際にはマウントしない |
-o マウントオプション | マウントオプションを指定する -o remount 再マウント -o noexec バイナリの実行を許可しない -o nosuid SUID、SGIDを無視する -o loop ループバックマウントする(イメージファイルのマウント) |
ext2 | Linux で標準的に使用されるファイルシステム |
ext3 | ext2にジャーナリング機能を追加したファイルシステム。ジャーナリングファイルシステムとは、ファイル更新履歴のパックアップを記録しておく機能をもったファイルシステムの事です。 |
iso9660 | CD-ROMで標準的に使用されるファイルシステム |
msdos | MS-DOSのファイルシステム |
vfat | Windowsファイルシステム |
nfs | NFS(ネットワークファイルシステム) |
async | ファイルシステムの入出力のすべてを非同期で実行する |
sync | ファイルシステムの入出力のすべてを同期で実行する |
auto | mount -a コマンド実行時にマウントする |
noauto | mount -a コマンド実行時にマウントしない |
atime | ファイルシステムへのアクセスごとにinodeのアクセス時刻を更新する |
notime | inodeのアクセス時刻を更新しない(ディスクアクセスの高速化) |
dev | ファイルシステム上のデバイスファイルを利用できる |
exec | バイナリの実行を許可する |
noexec | バイナリの実行を許可しない |
ro | 読み取り専用でマウントする |
rw | 読み書き可能でマウントする |
suid | SUID と SGID を有効にする |
nosuid | SUID と SGID を無効にする |
group | ユーザーのグループがデバイスファイルの所有グループと一致すればにマウントを許可する |
user | 一般ユーザーにマウントを許可する |
users | 一般ユーザーにマウントを許可し、マウントを実行していないユーザーにもアウンマウントを許可する |
nouser | 一般ユーザーのマウントを禁止する |
defaults | async、auto、dev、exec、nouser、rw、suid の各オプションを適用してマウントする |
unhide | 隠しファイルも表示する |
usrquota | ユーザクォータを有効にする |
grpquota | グループクォータを有効にする |
noquota | クォータを使用しない |
owner | デバイスファイルの所有者によるマウントを許可する コンソールにログインしたユーザーが端末デバイスの所有者となり、マウントを実行できる |
umount [オプション] [デバイス・ディレクトリ] |
|
-a | /etc/fstab に記述されている全てのファイルシステムをアンマウントする |
-n | umount 時に/etc/mtab に書き込まない |
-r | アンマウント失敗時に、読み取り専用で再マウントする |
-v | 詳細表示する |
-t type | ファイルシステムのタイプを指定する |
CD-ROMをマウントするには、mount コマンドを使用します。以下コマンドを入力するとCD-ROMが回り始めるはずです。マウントとは、わかりやすく言えば、デバイス上のファイルシステムをディレクトリのひとつとして使用することです。
$ mount /dev/cdrom |
しかし、上記のmountコマンドは、/etc/fstabファイル内にCD-ROMデバイスに関する記述がある場合です。
/etc/fstabファイルに記述がない場合は以下のように入力します。
# mount -t iso9660 /dev/sr0 /mnt/cdrom |
cd-romが/dev/sr0として認識され、cd-romのファイルタイプをiso9660として、/mnt/cd-romにマウントする場合です。
$ mount /dev/fd0 $ cd /mnt/floppy |
CD-ROMをアンマウントするには、umount コマンドを使用します。
$ umount /dev/cdrom |
$ umount /mnt/floppy |
USBメモリをマウントするには、上記ふたつのように簡単にはいきません。USBメモリは、SCSIデバイスとして認識するため、/dev/sda
のように指定します。また、ファイルシステムタイプは、vfat (Windows 95やNTなどが採用しているファイルシステム)にします。なお、-r
オプションを使用すると、読み込みオンリーでマウントされます。
# mkdir /mnt/usb # mount -rt vfat /dev/sda /mnt/usb |
ただし、この状態でディレクトリ内を閲覧しても、日本語のファイル名は、「???.txt」のように表示されてしまいます。これではちょっと不便なので、オプションとして
iocharset=euc-jp とcodepage=932 を追記してマウントを実行するときちんと日本語ファイル名が表示されるようになります。これは、Windows のDOSファイルシステムをマウントする時も同様です。
# cd /mnt/usb # ls 12345.txt ?????? SCSI?????.txt # cd ; umount /mnt/usb # mount -t vfat /dev/sda /mnt/usb -o iocharset=euc-jp codepage=932 # cd /mnt/usb ; ls 12345.txt identity SCSIの作成ログ.txt |
なお、USBメモリをマウントするときにこれらのオプションを省略する場合は、/etc/fstabに記述しておくと、簡単にマウントできるようになります。/etc/fstab
の最後の行に以下のような行を追記します。
# vi /etc/fstab |
/dev/sda /mnt/usb vfat defaults,codepage=932,iocharset=euc-jp 0 0 |
これで、mount /mnt/usb と指定するだけで、ファイル名が日本語で表示されるようになります。
# mount /mnt/usb |
umount コマンド実行時に、「umount: /mnt/cdrom: デバイスを使用中です」と言われることがあります。これは、カレントディレクトリがCD-ROM内のディレクトリの場合です。カレントディレクトリがCD-ROM内である場合には、アンマウントできません。一旦、cd
コマンドで、ホームディレクトリなどのCD-ROM内以外のディレクトリに移動してから、umount を実行します。
$ cd $ umount /dev/cdrom |
また、他のユーザーによってCD-ROMがマウントされていたり、複数のターミナルを起動してマウントしている場合なども同様にアンマウントできません。その場合は、fuser
コマンドを使用して、CD-ROM が使用するプロセスを確認した上で、kill します。但し、ユーザーのプロセスを終了させるときには、必ず事前に警告するようにします。
# fuser -mv /mnt/cdrom
USER PID ACCESS COMMAND /mnt/cdrom/ sakura 10245 ..c.. bash # kill -9 10245 もしくは、fuser -k /mnt/cdrom # umount /mnt/cdrom |
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[1.04:リポジトリとパッケージ管理] | |
[1.05:ハードウェア、ディスク、パーティション、ファイルシステム] | |
[1.05.1 ハードウェアの基礎知識と設定] | |
[1.05.2 ハードディスクのレイアウトとパーティション] | |
[1.05.3 ファイルシステムの作成と管理、マウント] | |
[1.06:シェルおよびスクリプト] | |
[講義検索] | |
[リンク集] |